import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *
V nasledujúcich príkladoch budeme kresliť grafy a vyšetrovať priebeh cyklometrických funkcií.
Budeme sa venovať týmto funkciam: $$y = \arcsin x \\ y = \arccos x \\ y = \arctan x.$$ Cyklometrické funkcie sú inverzné ku goniometrickým funkciám.
Dokumentácia:
Nakreslenie grafu funkcie $$y = \arcsin x.$$ Funkcia arkussínus je definovaná na množine $\langle -1, 1 \rangle$. Je inverzná k zúženiu funkcie sínus na interval $\left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle$: $$ \forall x \in \langle -1, 1 \rangle \, \forall y \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle \!{:}\ \arcsin x = y \Leftrightarrow x = \sin y. $$ Všimnime si, že platí $$ \forall x \in \langle -1, 1 \rangle {:}\ \sin \arcsin x = x \\ \forall y \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle \!{:}\ \arcsin \sin y = y. $$
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.sin(X) # ufunc verzia zúženia funkcie sínus
X1 = np.linspace(-np.pi/2, np.pi/2, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = np.linspace(-np.pi/2, np.pi/2, 2*20+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return np.arcsin(X) # ufunc verzia funkcie arkussínus
X3 = np.linspace(-1, 1, 2*100+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 9) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie arkussínus") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
#ax.grid() # pravoúhla sieť
## spoločné nastavenia pre obe osi
lim = (-1.8, 1.8) # ohraničenie hodnôt
ticks = [-1, 0, 1] + [n * np.pi / 2 for n in [-1, 1]] # kótovanie
ticklabels = [-1, 0, 1] + [smart_ticklabel(n, r"\pi", 2) for n in [-1, 1]] # označenie kót
## x-ová os
ax.set_xlim(lim) # ohraničenie hodnôt pre osu x
ax.set_xticks(ticks) # kótovanie x-ovej osi
ax.set_xticklabels(ticklabels) # označenie kót na x-ovej osi
## y-ová os
ax.set_ylim(lim) # ohraničenie hodnôt pre osu y
ax.set_yticks(ticks) # kótovanie y-ovej osi
ax.set_yticklabels(ticklabels) # označenie kót na y-ovej osi
## graf funkcie
ax.plot(X1, Y1, label=r"zúženie funkcie sínus na $\left\langle -\frac{\pi}{2}, \frac{\pi}{2}\right\rangle$")
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti $y = x$")
ax.plot(X3, Y3, label=r"arkussínus")
## legenda
ax.legend()
### archivácia obrázka
#fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Nakreslenie grafu funkcie $$y = \arcsin \sin x.$$ Návod. Zdôvodnenie pre interval $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$. Nech $x \in \left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$. Potom $\pi - x \in \left\langle -\frac{\pi}{2}, \frac{\pi}{2} \right\rangle$ a preto $$ \arcsin \sin x = \arcsin \sin (\pi - x) = \pi - x. $$ Grafom funkcie na intervale $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$ je tak priamka určená rovnicou $y = \pi - x$.
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return np.arcsin(np.sin(X)) # ufunc verzia funkcie
X = np.linspace(-3*np.pi, 3*np.pi, 6*2*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 2) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Graf funkcie $y = \arcsin\ \sin\ x$") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
#ax.grid() # pravoúhla sieť
## x-ová os
xtick_numerators = range(-6, 6+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators]) # kótovanie x-ovej osi
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators]) # označenie kót na x-ovej osi
## y-ová os
ytick_numerators = range(-1, 1+1)
ax.set_yticks([n * np.pi / 2 for n in ytick_numerators]) # kótovanie y-ovej osi
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 2) for n in ytick_numerators]) # označenie kót na y-ovej osi
## graf funkcie
ax.plot(X, Y)
### archivácia obrázka
#fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Pomocou funkcie arkussínus vyjadrite inverznú funkciu k zúženiu funkcie sínus na interval $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$. Nakreslite je graf.
####
#### šablóna riešenia
####
### zadanie
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
init_subplot(ax)
ax.set_aspect('equal')
#ax.grid()
## spoločné nastavenia pre obe osi
lim = (-1.1, 4.8)
ticks = [-1, 0, 1] + [n * np.pi / 2 for n in [1, 2, 3]]
ticklabels = [-1, 0, 1] + [smart_ticklabel(n, r"\pi", 2) for n in [1, 2, 3]]
## x-ová os
ax.set_xlim(lim)
ax.set_xticks(ticks)
ax.set_xticklabels(ticklabels)
## y-ová os
ax.set_ylim(lim)
ax.set_yticks(ticks)
ax.set_yticklabels(ticklabels)
## zúženie funkcie sínus
def f(X): return np.sin(X)
X1 = np.linspace(np.pi/2, 3*np.pi/2, 2*100+1)
Y1 = f(X1)
ax.plot(X1, Y1, label=r"zúženie funkcie sínus na $\left\langle \frac{\pi}{2}, \frac{3\pi}{2} \right\rangle$")
## os súmernosti
def g(X): return X
X2 = np.linspace(-1, 3*np.pi/2, 2*20+1)
Y2 = g(X2)
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti $y = x$")
### riešenie
# def h(X): return None # ufunc verzia inverznej funkcie
# X3 = None # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
# ax.plot(X3, Y3, label=r"inverzná funkcia")
## dokončenie
ax.legend()
#fig.savefig("<meno súboru>.png")
fig.show()
Nakreslite graf funkcie $$y = \arccos x.$$ Funkcia arkuskosínus je definovaná na množine $\langle -1, 1 \rangle$. Je inverzná k zúženiu funkcie kosínus na interval $\langle 0, \pi \rangle$: $$ \forall x \in \langle -1, 1 \rangle \, \forall y \in \langle 0, \pi \rangle{:}\ \arccos x = y \Leftrightarrow x = \cos y. $$ Všimnime si, že platí $$ \forall x \in \langle -1, 1 \rangle{:}\ \cos \arccos x = x \\ \forall y \in \langle 0, \pi \rangle{:}\ \arccos \cos y = y. $$ Pokyny. V obrázku nakreslite os súmernosti a tiež graf zúženia funkcie kosínus.
Nakreslite graf funkcie $$y = \arccos \cos x$$ na intervale $\langle -3\pi, 3\pi \rangle$.
Pomocou funkcie arkuskosínus vyjadrite inverznú funkciu k zúženiu funkcie kosínus na interval $\langle \pi, 2\pi \rangle$. Nakreslite je graf.
Nakreslite graf funkcie $$y = \arctan x.$$ Funkcia arkustangens je definovaná na množine $R$. Je inverzná k zúženiu funkcie tangens na interval $\left( -\frac{\pi}{2}, \frac{\pi}{2}\right)$: $$ \forall x \in R\, \forall y \in \left( -\frac{\pi}{2}, \frac{\pi}{2}\right){:} \arctan x = y \Leftrightarrow x = \tan y. $$ Všimnime si, že platí $$ \forall x \in R{:} \tan \arctan x = x \\ \forall y \in \left( -\frac{\pi}{2}, \frac{\pi}{2}\right){:} \arctan \tan y = y. $$ Návod. Nasledujúci obrázok obsahuje jedno z možných riešení.
Nakreslite graf funkcie $$y = \arctan \tan x$$ na intervale $\langle -2\pi, 2\pi \rangle$.
Pomocou funkcie arkustangens vyjadrite inverznú funkciu k zúženiu funkcie tangens na interval $\left( \frac{\pi}{2}, \frac{3\pi}{2} \right)$. Nakreslite je graf.
Nájdite čísla $r$ a $\varphi$ také, že identita $$3 \cos x - 4 \sin x = r \sin(x - \varphi)$$ platí pre každé reálne číslo $x$. Overte graficky, že vaše riešenie je správne.
####
#### šablóna riešenia
####
### zadanie
fig, ax = plt.subplots()
fig.set_size_inches(9, 4)
init_subplot(ax)
ax.set_aspect('equal')
#ax.grid()
## x-ová os
xtick_numerators = range(-8, 8+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## funkcia
def f(X): return 3 * np.cos(X) - 4 * np.sin(X)
X = np.linspace(-4*np.pi, 4*np.pi, 8*2*20+1)
ax.plot(X, f(X), c='yellow', lw='5', label="zadanie")
## riešenie
r = 1 # tento údaj upravte
phi = 0 # tento údaj upravte
def g(X): return r * np.sin(X - phi)
ax.plot(X, g(X), label="riešenie")
## dokončenie
ax.legend()
#fig.savefig("<meno súboru>.png")
fig.show()